package com.shujia.base;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.resps.Tuple;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class RedisApi {
    public static void main(String[] args) {
        //先创建redis服务的链接对象
        //public Jedis(final String host, final int port)
        Jedis jedis = new Jedis("192.168.5.100", 7000);

        System.out.println("成功获取与redis的连接：" + jedis);
        System.out.println("-------------------------------------");

        //使用jedis api操作string数据类型
//        jedis.set("yzm","789789");
        //给一个键设置过期时间
//        jedis.expire("yzm",60);
        //获取一个字符串值
//        String res1 = jedis.get("yzm");
//        System.out.println(res1);
        //TODO:自己测试string其他的命令操作


        //使用jedis api操作list数据类型
//        jedis.lpush("list1","hello","world","java","hello","flink","spark");
//        List<String> list1 = jedis.lrange("list1", 0, -1);
//        for (String s : list1) {
//            System.out.println(s);
//        }


        //使用jedis api操作set数据类型
//        jedis.sadd("set1","hello","world","java","hello","flink","spark");
//        Set<String> set1 = jedis.smembers("set1");
//        for (String s : set1) {
//            System.out.println(s);
//        }


        //使用jedis api操作sorted set数据类型
        //zadd(String key, Map<String, Double> scoreMembers);
        //先将每一个元素和分数封装成Map集合
//        HashMap<String, Double> map1 = new HashMap<>();
//        map1.put("张成阳",87.0);
//        map1.put("方直",78.0);
//        map1.put("杨浩东",97.0);
//        map1.put("黄沪生",89.5);
//        map1.put("查镕贤",92.0);
//        map1.put("小虎",61.0);
//        jedis.zadd("zset1",map1);

//        List<String> zset1 = jedis.zrange("zset1", 0, 100);
//        for (String s : zset1) {
//            System.out.println(s);
//        }

//        List<Tuple> zset1 = jedis.zrangeByScoreWithScores("zset1", 0.0, 100.0);
//        for (Tuple tuple : zset1) {
//            //tuple封装了一个元素和一个分数
//            String element = tuple.getElement();
//            double score = tuple.getScore();
//            System.out.println(element + ": " + score);
//        }
//        System.out.println("------------------------");
//
//        List<Tuple> zset2 = jedis.zrevrangeByScoreWithScores("zset1", 100.0, 0.0);
//        for (Tuple tuple : zset2) {
//            //tuple封装了一个元素和一个分数
//            String element = tuple.getElement();
//            double score = tuple.getScore();
//            System.out.println(element + ": " + score);
//        }


        //使用jedis api操作hash数据类型
//        HashMap<String, String> map1 = new HashMap<>();
//        map1.put("姓名","小虎");
//        map1.put("年龄","18");
//        map1.put("性别","男");
//        map1.put("住址","安徽合肥");
//        jedis.hset("小虎个人信息",map1);

//        String res1 = jedis.hget("小虎个人信息", "住址");
//        System.out.println(res1);

//        Map<String, String> res2 = jedis.hgetAll("小虎个人信息");
//        Set<Map.Entry<String, String>> entries = res2.entrySet();
//        for (Map.Entry<String, String> entry : entries) {
//            String key = entry.getKey();
//            String value = entry.getValue();
//            System.out.println(key + ":" + value);
//        }


//        Set<String> keys = jedis.keys("*");
//        for (String key : keys) {
//            System.out.println(key);
//        }

        System.out.println(jedis.get("wqrewqrw"));

        //关闭连接资源
        jedis.close();
    }
}
